package info.douyi.dps.utils;

import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 分页响应包装类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageResult<T> implements Serializable {
    private List<T> list;       // 当前页数据列表
    private Long total;         // 总记录数
    private Integer pageNum;    // 当前页码
    private Integer pageSize;   // 每页条数
    private Boolean hasNextPage; // 是否有下一页

    /**
     * 快速构建分页结果（适用于 MyBatis PageHelper）
     */
    public static <T> PageResult<T> of(PageInfo<T> pageInfo) {
        boolean hasNext = pageInfo.isHasNextPage(); // 判断是否有下一页
        return new PageResult<>(
                pageInfo.getList(),
                pageInfo.getTotal(),
                pageInfo.getPageNum(),
                pageInfo.getPageSize(),
                hasNext
        );
    }

    /**
     * 通用构建方法
     */
    public static <T> PageResult<T> of(List<T> list, Long total, Integer pageNum, Integer pageSize, boolean hasNextPage) {
        return new PageResult<>(list, total, pageNum, pageSize, hasNextPage);
    }
}